package org.monster.context.core.parameter;

import org.monster.context.core.headerfilter.HeaderFilterChain;
import org.monster.context.core.request.HttpRequest;

import javax.servlet.FilterChain;

/**
 * 参数
 * 根据不同的请求类型返回请求发送信息处理的对象
 *
 * @author Monster
 */
public abstract class Parameter {

    /**
     * 名称
     */
    private String name;

    /**
     * 值
     */
    private String value;

    /**
     * 获取 名称
     *
     * @return 名称
     */
    public String getName() {
        return name;
    }

    /**
     * 设置 名称
     *
     * @param name 名称
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取 值
     *
     * @return 值
     */
    public String getValue() {
        return value;
    }

    /**
     * 设置 值
     *
     * @param value 设置
     */
    public void setValue(String value) {
        this.value = value;
    }

    /**
     * @param request  请求
     * @param response 响应
     * @param chain    通道
     */
    public abstract void getHeadParameter(HttpRequest request,
                                          HttpResponse response, HeaderFilterChain chain);

    /**
     * @param request  请求
     * @param response 响应
     * @param chain    通道
     */
    public abstract void getHeadParameter(HttpRequest request,
                                          HttpResponse response, FilterChain chain);

    /**
     * @param request 请求
     * @param params
     */
    protected void getParams(HttpRequest request, String[] params) {
        for (String param : params) {
            int i = param.indexOf('=');
            name = param.substring(0, i);
            value = param.substring(i + 1, param.length());
            request.setParameters(this);
        }
    }
}
